﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FlexFlow.Model;
using FlexFlow.Common;

namespace FlexFlow.Model
{
    /// <summary>
    /// 为在线用户信息提供内存数据缓存
    /// </summary>
    public sealed class OnlineUserInfoHolder : IClearnable
    {
        /// <summary>
        /// 表示在线用户的超时时间间隔，引擎将会在用户未做操作指定时间后执行清理操作，
        /// 默认的超时时间间隔为1小时
        /// </summary>
        public static TimeSpan AliveTimeSpan { get; set; }
        /// <summary>
        /// 表示当前缓存的登录用户信息
        /// </summary>
        public LoginedUserInfo LoginedUser { get; set; }
        /// <summary>
        /// 表示当前缓存的用户最后一次执行操作的时间
        /// </summary>
        public DateTime LastOperateTime { get; set; }
        /// <summary>
        /// 判断当前在线用户是否已经超时
        /// </summary>
        /// <returns>
        /// 一个值，表示当前用户是否已经超时
        /// </returns>
        public bool NeedToClearn()
        {
            return DateTime.Now - LastOperateTime > AliveTimeSpan;
        }
        /// <summary>
        /// 初始化
        /// </summary>
        static OnlineUserInfoHolder()
        {
            AliveTimeSpan = new TimeSpan(1, 0, 0);
        }
    }
}
